package com.librelato.negocio;

import java.util.List;
import java.util.Map;
import java.util.SortedMap;

import com.librelato.bean.ProdutoBean;
import com.librelato.bean.SolicitacaoBean;
import com.librelato.negocio.interfaces.IProdutoServico;
import com.librelato.persistencia.ProdutoDao;
import com.librelato.persistencia.interfaces.IDaoGenerico;
import com.librelato.persistencia.interfaces.IProdutoDao;

public class ProdutoServico<P extends ProdutoBean> extends ServicoGenerico<P>
		implements IProdutoServico<P> {

	private final IProdutoDao<P> dao;

	public ProdutoServico() {
		this.dao = new ProdutoDao<P>();
	}

	public void excluir(P p) throws Exception {
	};

	public void editar(P p) throws Exception {
	};

	@Override
	public P salvar(P usuario) {
		return null;

	}

	@Override
	public IDaoGenerico<P> getDao() {
		return this.dao;
	}

	@Override
	public void preSalvar(P p) {
		// TODO Auto-generated method stub

	}

	@Override
	public void posSalvar(P p) {
		// TODO Auto-generated method stub

	}

	@Override
	@SuppressWarnings("unchecked")
	public List<P> buscaProdutos(P p) throws Exception {

		return ((List<P>) ((IProdutoDao<ProdutoBean>) dao).buscaProdutos(p));
	}

	@Override
	public List<P> buscaProdutos(Map<String, String> param) throws Exception {
	
		return this.dao.buscaProdutos(param);
	}

	@Override
	public ProdutoBean verificaProduto(String cod, String filial)
			throws Exception {
		return this.dao.verificaProduto(cod, filial);
	}

	@Override
	public boolean verificaLocal(String filial, String cod) throws Exception {
		return this.dao.verificaLocal(filial, cod);
	}

	@Override
	public boolean verificaOrdemProducao(String filial, String cod)
			throws Exception {
		return this.dao.verificaOrdemProducao(filial, cod);
	}

	public SortedMap<String, String> buscaEstoqueProduto(
			SolicitacaoBean solicitacao) throws Exception {
		return this.dao.buscaEstoqueProduto(solicitacao);
	}

	@Override
	public List<ProdutoBean> buscaAnaliseProdutoHistoricoPedido(
			ProdutoBean produto) throws Exception {

		return this.dao.buscaAnaliseProdutoHistoricoPedido(produto);
	}

	@Override
	public Map<Integer, Double> buscaConsumoProduto(ProdutoBean produto,
			List<Integer> meses, List<Integer> anos) throws Exception {
		return this.dao.buscaConsumoProduto(produto, meses, anos);
	}
	
	@Override
	public List<P> buscaProdutosPedido(Map<String, String> param)
			throws Exception {
		return this.dao.buscaProdutosPedido(param);
	}

}
